package intelligentCustomer.memory;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用户档案类
 * 存储用户的长期记忆信息
 */
public class UserProfile {
    /** 用户ID */
    private final String userId;
    
    /** 用户产品偏好列表 */
    private final List<String> productPreferences = new ArrayList<>();
    
    /** 用户联系信息 */
    private final Map<String, String> contactInfo = new HashMap<>();
    
    /** 用户查询次数 */
    private int queryCount = 0;
    
    /** 价格敏感度 */
    private String priceSensitivity = "medium";
    
    /** 首次交互时间 */
    private LocalDateTime firstInteractionTime;
    
    /** 最近交互时间 */
    private LocalDateTime lastInteractionTime;
    
    /** 历史购买记录 */
    private final List<String> purchaseHistory = new ArrayList<>();
    
    /**
     * 构造函数
     * 
     * @param userId 用户ID
     */
    public UserProfile(String userId) {
        this.userId = userId;
        this.firstInteractionTime = LocalDateTime.now();
        this.lastInteractionTime = LocalDateTime.now();
    }
    
    /**
     * 添加产品偏好
     * 
     * @param productType 产品类型
     */
    public void addProductPreference(String productType) {
        if (!productPreferences.contains(productType)) {
            productPreferences.add(productType);
        }
    }
    
    /**
     * 设置联系信息
     * 
     * @param type 联系方式类型
     * @param value 联系方式值
     */
    public void setContactInfo(String type, String value) {
        if (value != null) {
            contactInfo.put(type, value);
        }
    }
    
    /**
     * 增加查询计数
     */
    public void incrementQueryCount() {
        queryCount++;
        lastInteractionTime = LocalDateTime.now();
    }
    
    /**
     * 设置价格敏感度
     * 
     * @param sensitivity 敏感度级别(low, medium, high)
     */
    public void setPriceSensitivity(String sensitivity) {
        this.priceSensitivity = sensitivity;
    }
    
    /**
     * 添加购买记录
     * 
     * @param productInfo 产品信息
     */
    public void addPurchase(String productInfo) {
        purchaseHistory.add(productInfo);
    }
    
    /**
     * 获取用户ID
     * 
     * @return 用户ID
     */
    public String getUserId() {
        return userId;
    }
    
    /**
     * 获取产品偏好列表
     * 
     * @return 产品偏好列表
     */
    public List<String> getProductPreferences() {
        return new ArrayList<>(productPreferences);
    }
    
    /**
     * 获取联系信息
     * 
     * @param type 联系方式类型
     * @return 联系方式值
     */
    public String getContactInfo(String type) {
        return contactInfo.get(type);
    }
    
    /**
     * 获取查询次数
     * 
     * @return 查询次数
     */
    public int getQueryCount() {
        return queryCount;
    }
    
    /**
     * 获取价格敏感度
     * 
     * @return 价格敏感度级别
     */
    public String getPriceSensitivity() {
        return priceSensitivity;
    }
    
    /**
     * 获取首次交互时间
     * 
     * @return 首次交互时间
     */
    public LocalDateTime getFirstInteractionTime() {
        return firstInteractionTime;
    }
    
    /**
     * 获取最近交互时间
     * 
     * @return 最近交互时间
     */
    public LocalDateTime getLastInteractionTime() {
        return lastInteractionTime;
    }
    
    /**
     * 获取购买历史
     * 
     * @return 购买历史列表
     */
    public List<String> getPurchaseHistory() {
        return new ArrayList<>(purchaseHistory);
    }
} 